#ifndef SERIAL_H
#define SERIAL_H

#include <QObject>
#include <QtSerialPort/QSerialPort>
#include <QtSerialPort/QSerialPortInfo>
#include <QStringList>
#include <QString>
#include <QByteArray>
#include <QTextCodec>

class serial : public QSerialPort
{
    Q_OBJECT
public:
    explicit serial();
    ~serial();

    void setSerialPort(QString port);
    QStringList getSerialPort();
    void clearSerialPort();
    void setSerialDescription(QString description);
    QStringList getSerialDescription();
    void clearSerialDescription();
    void setSerialData(QByteArray data);
    QByteArray getSerialData();
    void clearSerialData();
    void setTxBytes(int txBytes);
    int getTxBytes();
    void setRxBytes(int rxBytes);
    int getRxBytes();
    void setSerialOnOff(bool OnOff);
    bool getSerialOnOff();

    QString byteArray2String(QByteArray byteArray);
    QByteArray string2ByteArray(QString string);

    void serialScan(void);
    bool serialOpen(QString serialName, int baudRate);
    void serialClose();

    void readSerialData();
    bool sendSerialData(QByteArray sendData);


private:
    QTextCodec *tc;
    QStringList m_serialPost;
    QStringList m_serialDescription;
    QByteArray m_serialData;
    int m_txBytes = 0;
    int m_rxBytes = 0;
    bool m_serialOnOff = false;

signals:
    void serialScanCompleted();
    void serialOpened();
    void serialOpenFailed();
    void serialClosed();
    void readDataCompleted(int recBytes);
    void sendDataCompleted(int sendBytes);

public slots:

};

#endif // SERIAL_H
